home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / mailfilter / theanswer / rexx / filterpuffer.install next >
Text File  |  1995-07-02  |  4KB  |  195 lines

  1. /*
  2. ** Beginn des Scripts
  3. */
  4.  
  5. OPTIONS RESULTS
  6. OPTIONS FAILAT 20
  7.  
  8. PARSE ARG archiv
  9.  
  10. IF archiv = '' THEN
  11.    quit('Format: FilterPuffer <LHa-Archiv oder Pufferdatei>',10)
  12.  
  13. IF ~EXISTS(archiv) THEN
  14.    quit('Die Datei' archiv 'existiert nicht!',10)
  15.  
  16. IF ~SHOW(LIBRARIES,'rexxsupport.library') THEN
  17.    IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
  18.       quit('Kann die <rexxsupport.library> nicht öffnen!',10)
  19.  
  20.  
  21.  
  22. /*
  23. ** Pfad des temporären Verzeichnisses 'tempdir' zusammensetzen
  24. */
  25.  
  26. IF RIGHT(tempdir,1) ~= '/' & RIGHT(tempdir,1) ~= ':' THEN
  27.    tempdir = tempdir||'/WILAM-04431-92081'
  28. ELSE
  29.    tempdir = tempdir||'WILAM-04431-92081'
  30.  
  31.  
  32.  
  33. /*
  34. ** 'tempdir' neu anlegen
  35. */
  36.  
  37. IF EXISTS(tempdir) THEN
  38.    ADDRESS COMMAND 'Delete "'||tempdir||'" ALL QUIET'
  39.  
  40. IF ~MAKEDIR(tempdir) THEN
  41.    quit('Verzeichnis' tempdir 'kann nicht angelegt werden!',10)
  42.  
  43.  
  44.  
  45. /*
  46. ** Pufferdatei öffnen, die ersten 7 Bytes einlesen und wieder schließen
  47. */
  48.  
  49. IF ~OPEN('testfile',archiv,'READ') THEN
  50.    quit('Fehler beim Öffnen der Pufferdatei' archiv||'!',rc)
  51.  
  52. string = READCH('testfile',7)
  53.  
  54. CLOSE('testfile')
  55.  
  56.  
  57.  
  58. /*
  59. ** Überprüfen ob die Pufferdatei mit LHA, LZX oder ZIP gepackt, oder
  60. ** ungepackt ist. Dann entsprechend nach 'tempdir' entpacken oder kopieren.
  61. */
  62.  
  63. SELECT
  64.    WHEN SUBSTR(string,3,3) = '-lh' & DATATYPE(SUBSTR(string,6,1)) = 'NUM' & RIGHT(string,1) = '-' THEN DO
  65.       SAY 'Entpacke LHA-Archiv "'||archiv||'" nach "'||tempdir||'/"'||'0a'x
  66.       ADDRESS COMMAND lha 'x -X' archiv '"'||tempdir||'/"'
  67.    END
  68.  
  69.    WHEN SUBSTR(string,1,3) = 'LZX' THEN DO
  70.       SAY 'Entpacke LZX-Archiv "'||archiv||'" nach "'||tempdir||'/"'||'0a'x
  71.       ADDRESS COMMAND lzx '-X0 x' archiv '"'||tempdir||'/"'
  72.    END
  73.  
  74.    WHEN SUBSTR(string,1,4) = 'PK'||'03'x||'04'x THEN DO
  75.       SAY 'Entpacke ZIP-Archiv "'||archiv||'" nach "'||tempdir||'/"'||'0a'x
  76.  
  77.       olddir=PRAGMA('D',tempdir)
  78.       tarchiv=olddir
  79.  
  80.       IF RIGHT(tarchiv,1) ~= '/' &RIGHT(tarchiv,1) ~= ':' THEN
  81.          tarchiv=tarchiv||'/'
  82.  
  83.       tarchiv=tarchiv||archiv
  84.       IF UPPER(RIGHT(tarchiv,4)) = '.ZIP' THEN
  85.          tarchiv=LEFT(tarchiv,LENGTH(tarchiv)-4)
  86.  
  87.       ADDRESS COMMAND unzip '-x "'||tarchiv||'"'
  88.       olddir=PRAGMA('D',olddir)
  89.    END
  90.  
  91.    OTHERWISE DO
  92.       SAY 'Kopiere "'||archiv||'" nach "'||tempdir||'/'||archiv||'.sortin"'
  93.       ADDRESS COMMAND 'copy' archiv '"'||tempdir||'/'||archiv||'.sortin"'
  94.    END
  95. END
  96.  
  97. IF rc ~= 0 THEN
  98.    quit('Fehler beim Entpacken/Kopieren der Pufferdatei' archiv||'!',rc)
  99.  
  100. SAY
  101.  
  102.  
  103.  
  104. /*
  105. ** Alle Filenamen auslesen
  106. */
  107.  
  108. filestring = SHOWDIR(tempdir,'FILE')
  109. anzfiles = WORDS(filestring)
  110.  
  111. IF anzfiles = 0 THEN
  112.    quit('Die Pufferdatei enthielt keine Daten!',10)
  113.  
  114.  
  115.  
  116. /*
  117. ** Testen, ob MailFilter gestartet ist. Wenn nicht, dann jetzt starten
  118. */
  119.  
  120. IF ~SHOW(PORTS,'MAILFILTER') THEN DO
  121.    ADDRESS COMMAND
  122.    'run >NIL: <NIL: MAILFILTER:MailFilter'
  123.  
  124.    DO 3 WHILE ~SHOW(PORTS,'MAILFILTER')
  125.       'WaitForPort MAILFILTER'
  126.    END
  127.  
  128.    IF rc = 5 THEN
  129.       quit('Kann MailFilter nicht starten!',10)
  130. END
  131.  
  132.  
  133.  
  134. /*
  135. ** Aktuelles Verzeichnis ermitteln
  136. */
  137.  
  138. pfad = PRAGMA(D)
  139.  
  140. IF RIGHT(pfad,1) ~= '/' & RIGHT(pfad,1) ~= ':' THEN
  141.    pfad = pfad||'/'
  142.  
  143.  
  144.  
  145. /*
  146. ** Alle Files aus dem temporären Verzeichnis lesen,
  147. ** filtern und im aktuellen Verzeichnis als ein Puffer
  148. ** abspeichern.
  149. */
  150.  
  151. DO i = 1 TO anzfiles
  152.    SAY 'Filtern von' WORD(filestring,i) '...'
  153.    ADDRESS MAILFILTER FILTER 'FROM "'||tempdir||'/'||WORD(filestring,i)||'" TO "'||pfad||'PUFFER"' JOIN
  154.  
  155.    IF rc ~= 0 THEN
  156.       quit('Fehler beim Filtern der Datei' WORD(filestring,i) rc2,rc)
  157. END
  158.  
  159.  
  160.  
  161. /*
  162. ** Einstellungen speichern, damit bei allen verwendeten
  163. ** Filtereinträgen das aktuelle Datum vermerkt wird.
  164. */
  165.  
  166. ADDRESS MAILFILTER SAVE
  167.  
  168.  
  169.  
  170. /*
  171. ** 'tempdir' komplett löschen
  172. */
  173.  
  174. ADDRESS COMMAND 'Delete "'||tempdir||'" ALL QUIET'
  175.  
  176. EXIT(0)
  177.  
  178.  
  179.  
  180. /*
  181. ** Script mit Meldung beenden
  182. */
  183.  
  184. quit:
  185.    PARSE ARG message,rcode
  186.    IF message ~= '' THEN
  187.       SAY message
  188.  
  189.    IF OPEN('con','*','WRITE') THEN DO
  190.       CALL WRITECH('con','0A'x||'Bitte <RETURN> drücken')
  191.       CALL READLN('con')
  192.    END
  193.  
  194.    EXIT(rcode)
  195.